from django.shortcuts import render

# Create your views here.
from .models import WeChatUser, Status
from django.shortcuts import redirect, render

def home(request):
    # 这个函数看起来是正确的，它渲染了homepage.html模板
    return render(request, 'homepage.html')

def show_user(request):
    # 获取当前登录用户的ID（假设用户已经登录）
    user_id = request.user.id
    # 从WeChatUser模型中获取对应的WeChatUser对象
    # 这里假设每个Django用户都有一个对应的WeChatUser，且user_id是外键
    wechat_user = WeChatUser.objects.get(user_id=user_id)
    # 渲染user.html模板，并传递wechat_user对象作为上下文
    return render(request, 'user.html', {'user': wechat_user})

def show_status(request):
    # 获取所有Status对象
    statuses = Status.objects.all()
    # 渲染status.html模板，并传递statuses列表作为上下文
    return render(request, 'status.html', {'statuses': statuses})

from config import APP_CODE
from settings import ENVIRONMENT

def submit_post(request):
    # 这里有一个潜在的问题：应该使用request.user直接获取当前用户对象
    # 假设WeChatUser模型有一个指向Django用户模型的外键
    user = WeChatUser.objects.get(user=request.user)  # 这里可能应该使用user_id=request.user.id，除非你的模型定义了user=OneToOneField(User)
    # 从POST请求中获取文本内容
    text = request.POST.get('text')
    # 如果文本内容存在
    if text:
        # 创建一个新的Status对象，并保存
        status = Status(user=user, text=text)
        status.save()
        # 重定向到/status路径（这里应该是一个命名的URL模式，而不是硬编码的字符串）
        # return redirect('/status')  # 建议使用reverse('status_view_name')来避免硬编码
        if ENVIRONMENT == 'dev':
            return redirect(f'/status')
        elif ENVIRONMENT == 'stag':
            return redirect(f'/stag--{APP_CODE}/status')
    # 如果文本内容不存在，则渲染my_post.html模板（这里可能不是一个好的用户体验，因为没有反馈为什么表单没有提交）
    # 通常，如果没有文本，你应该在模板中显示一个错误消息，而不是简单地重新渲染表单
    return render(request, 'my_post.html')


from django.conf import settings
from django.http import HttpResponse
from django.contrib.auth import get_user_model


def set_super_user(request):
    """
    将指定用户添加为管理员。

    这个函数会遍历 settings.INIT_SUPERUSER 列表中的用户名，
    并将这些用户设置为 is_staff=True, is_active=True, is_superuser=True。
    如果用户不存在，则会创建新用户。
    """
    user = get_user_model()
    for name in settings.INIT_SUPERUSER:
        # 使用 update_or_create 方法来确保用户存在，并设置管理员权限
        user.objects.update_or_create(
            username=name,
            defaults={
                'is_staff': True,
                'is_active': True,
                'is_superuser': True,
            }
        )
    # 返回成功响应
    return HttpResponse('Success')

from django.conf import settings
from django.http import HttpResponse

from blueapps.account import get_user_model


def load_data(request):
    """
    添加用户为管理员
    """
    User = get_user_model()
    for name in settings.INIT_SUPERUSER:
        User.objects.update_or_create(
            username=name,
            defaults={'is_staff': True, 'is_active': True, 'is_superuser': True}
        )
    return HttpResponse('Success')
